<?php

declare(strict_types=1);

namespace Core\Package\ElementPlus\FormCreate\FormItem;

/**
 * 开关
 * Class Color
 */
class Switchs extends FormItemAbstract
{
    protected string $_type = 'switch';

    /**
     * 获取值类型
     * @return string
     */
    public function valueType(): string
    {
        return self::VALUE_TYPE_STRING;
    }


    public function defaultProps(): array
    {
        return [
            'active-value' => '1',
            'inactive-value' => '0',
            'inline-prompt' => true,
        ];
    }

    /**
     * Radio constructor.
     * @param string $field
     * @param string $title
     * @param string|numeric|bool $value
     */
    public function __construct(string $field, string $title, mixed $value = '')
    {
        $this->_title = $title;
        $this->_field = $field;
        $this->_value = $value;
        $this->clearable(false);
    }


    /**
     * 防止点击可选清空
     * @param bool $clearable
     * @return FormItemAbstract
     */
    public function clearable(bool $clearable): FormItemAbstract
    {
        if (isset($this->_props['clearable'])) {
            unset($this->_props['clearable']);
        }
        return $this;
    }

    /**
     * 选中值
     * @param $value
     * @return FormItemAbstract|Switchs
     */
    public function checkedValue($value): FormItemAbstract|Switchs
    {
        return $this->props('checkedValue', $value);
    }


    /**
     * 非选中值
     * @param $value
     * @return FormItemAbstract|Switchs
     */
    public function uncheckedValue($value): FormItemAbstract|Switchs
    {
        return $this->props('uncheckedValue', $value);
    }


    /**
     * 开启文字
     * @param string $activeText
     * @return FormItemAbstract|Switchs
     */
    public function activeText(string $activeText): FormItemAbstract|Switchs
    {
        return $this->props('active-text', $activeText);
    }


    /**
     * 关闭文字
     * @param string $inactiveText
     * @return FormItemAbstract|Switchs
     */
    public function inactiveText(string $inactiveText): FormItemAbstract|Switchs
    {
        return $this->props('inactive-text', $inactiveText);
    }


    /**
     * 文字显示在图标内
     * @param bool $inlinePrompt
     * @return FormItemAbstract|Switchs
     */
    public function inlinePrompt(bool $inlinePrompt): FormItemAbstract|Switchs
    {
        return $this->props('inline-prompt', $inlinePrompt);
    }
}